// 路由鉴权
import router from './router/index'
import { ElMessage } from 'element-plus'
// 引入nprogress进度条
import nprogress from 'nprogress'
import 'nprogress/nprogress.css'
nprogress.configure({
  easing: 'ease', // 动画方式
  speed: 500, // 递增进度条的速度
  showSpinner: false, // 是否显示加载图标
})
// 获取用户相关的token数据
import loginInfoStore from './stores/modules/login'
import pinia from './stores'
const userStore = loginInfoStore(pinia)
const username = userStore.username
// 前置守卫
router.beforeEach(async (to, from, next) => {
  document.title = '乐伴-' + to.meta.title // 修改页面标题
  nprogress.start() // 开启进度条
  const token = userStore.token
  // 判断是否登录
  if (token) {
    if (to.path === '/login') {
      next('/')
    } else {
      // 先检查有没有用户信息
      // 有用户信息就放行,否则就去获取用户信息
      if (username) {
        next()
      } else {
        try {
          await userStore.getUserInfor()
          next()
        } catch (err) {
          // token过期,获取不到用户信息,需要重新登录
          ElMessage({
            message: err + '登录状态已过期，请重新登录',
            type: 'warning',
          })
          userStore.userLogout()
          next('/login')
        }
      }
    }
  } else {
    if (to.path === '/login') {
      next()
    } else {
      ElMessage({
        message: '请先登录！',
        type: 'warning',
      })
      next('/login')
    }
  }
})
// 后置守卫
router.afterEach((to, from) => {
  nprogress.done() // 关闭进度条
  console.log(to, from)
})

// 用户未登录:只能访问login
// 登录成功:可以访问任意页面
